home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / macros / latex209 / contrib / letters / stbrief / stbrief.sty (.txt) < prev    next >
LaTeX Document  |  1992-02-25  |  14KB  |  420 lines

  1. % DOCUMENT OPTION STYLE -- Released 21-MAR-1991
  2. % adapted from LETTER DOCUMENT STYLE by Leslie Lamport
  3. % This style has to be used as an optional style.
  4. % Tests have been made with the article.sty as the basis sty.
  5. % This style was also used together with the finder.sty.
  6. % Advice: Use the STBrief.Sty in connection with the DefUser.Sty.
  7. %         (Of course ist works without it)
  8. % Copyright (c) 1991,1991 by Steffen Steinhaeuser
  9. % Permission to copy all or part of this work is granted, provided
  10. % that the copies are not made or distributed for resale, and that
  11. % the copyright notice and this notice are retained.
  12. % THIS WORK IS PROVIDED ON AN "AS IS" BASIS.  THE AUTHOR PROVIDES NO
  13. % WARRANTY WHATSOEVER, EITHER EXPRESS OR IMPLIED, REGARDING THE WORK,
  14. % INCLUDING WARRANTIES WITH RESPECT TO ITS MERCHANTABILITY OR FITNESS
  15. % FOR ANY PARTICULAR PURPOSE.
  16. % If you make any improvements, I'd like to hear about them.
  17. % Steffen Steinh\"auser
  18. % Landwehrstr. 47
  19. % 6100 Darmstadt
  20. % Federal Republic of Germany
  21. % steinhaeuser@ddagsi5.bitnet
  22. % steffen_steinhaeuser@mz.maus.de
  23. \def~{ }
  24. \typeout{-------------------------------------------------------}
  25. \typeout{| STBRIEF.STY V1.4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|}
  26. \typeout{| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c'15-Feb-91 R.Th/Stone |}
  27. \typeout{-------------------------------------------------------}
  28. \typeout{}
  29. % Die Liste der folgenden Makros sollte mit den benutzerspezifischen
  30. % Daten in eine Datei als Optionstyle in \documentstyle[]{} angegeben
  31. % werden. Diese Arbeit sollte aber, falls vorhanden, der DefUser.Sty
  32. % uebernehmen.
  33. % Folgenden Makros sollten die eigenen Einstellungen uebergeben werden:
  34. % \name{}
  35. % \strasse{}
  36. % \stadt{}
  37. % \signature{}
  38. % \telefon{}
  39. % \faxnummer{}
  40. % \kontonr{}
  41. % \bank{}
  42. % \bankleitzahl{}
  43. % \smallogo{}
  44. % \logo{}
  45. % \logosymbol{}
  46. % \datum{}
  47. % Folgende Makros sollten ggf. nur angegeben werden (oder nicht)
  48. % \fax
  49. % Folgende Flags bzgl. eigener Einstellung setzen
  50. % \toplogo[true]    oder \toplogofalse
  51. % \toprule[true]    oder \toprulefalse
  52. % \bottomrule[true] oder \bottomrulefalse
  53. % \bankvtrue        oder \bankv[false]
  54. % \from[true]       oder \fromfalse
  55. % \symlogotrue      oder \symlogo[false]
  56. % [...] ist die Defaulteinstellung im STBrief.sty
  57. % Ende der Liste
  58. % Font fuer das Logo im Briefkopf
  59. \newfont{\toplogofnt}{cmtt10 scaled 2074}
  60. % Skip zwischen zwei Absaetzen ist so gross wie etwa eine Leerzeile
  61. % Begin des Absatzes ist nicht eingerueckt
  62. \parskip1.5ex plus.5ex minus.5ex
  63. \parindent0pt
  64. %    ****************************************
  65. %    *        laengen - definitionen        *
  66. %    ****************************************
  67. % This is from documentsubstyle DINA4 for DIN A4 pagesize. GMD Z1.BN  12.06.85
  68. \oddsidemargin 0pt
  69. \evensidemargin 0pt
  70. \marginparwidth 0pt
  71. \marginparsep 0pt
  72. \marginparpush 0pt
  73. \topmargin -1.2cm
  74. \headheight 2.5cm
  75. \headsep 1cm
  76. \footheight 0.7cm
  77. \footskip 1cm
  78. \textheight 17cm
  79. \textwidth 16.2cm
  80. % individuelle Einstellung je nach Computertyp und Druckertreiber
  81. \voffset-8mm
  82. %\hoffset
  83. %    ****************************************
  84. %    *    logische flags - definitionen     *
  85. %    ****************************************
  86. % Steuerung von etwaigen Ausgaben (oder nicht) durch neue IF-Kommandos
  87. \newif\iftoplogo    % Ausgabe des toplogos
  88. \newif\iftoprule    % Linie oben (unter dem TopLogo)
  89. \newif\ifbottomrule % Linie unten (ueber der Bankverbindung)
  90. \newif\ifsmallfrom  % Absender ueber der Adresse
  91. \newif\iffrom       % from (-address) kann angeschaltet werden
  92. \newif\ifbankv      % Ausgabe der Bankverbindung in der Fu_zeile
  93. \newif\ifsymlogo    % Ausgabe eines Logosymbols
  94. \newif\ifdefuser
  95. % Defaulteinstellungen
  96. \fromtrue
  97. \smallfromtrue
  98. \bankvfalse
  99. \toplogotrue
  100. \symlogofalse
  101. \topruletrue
  102. \bottomruletrue
  103. %    ****************************************
  104. %    *        textmakro - definitionen      *
  105. %    ****************************************
  106. \def\fax{ %
  107. \smallfromfalse
  108. \toprulefalse
  109. \bottomrulefalse}
  110. \def\kontonr#1{\def\kontono{#1}}
  111. \def\kontono{}
  112. \def\bank#1{\def\bankname{#1}}
  113. \def\bankname{}
  114. \def\bankleitzahl#1{\def\bankzahl{#1}}
  115. \def\bankzahl{}
  116. \def\name#1{\def\fromname{#1}\def\fromsig{#1}}
  117. \def\fromname{}
  118. \def\strasse#1{\def\fromstreet{#1}}
  119. \def\fromstreet{}
  120. \def\stadt#1{\def\fromcity{#1}}
  121. \def\fromcity{}
  122. \def\signature#1{\def\fromsig{#1}}
  123. \def\fromsig{}
  124. \def\faxnummer#1{\def\faxnum{#1}}
  125. \def\faxnum{}
  126. \newlength{\telenumwidth}
  127. \newlength{\telewidth}
  128. \settowidth{\telewidth}{Telefon}
  129. \def\telefon#1{\def\telephonenum{#1}\settowidth{\telenumwidth}{#1}}
  130. \def\telephonenum{}
  131. \def\smallogo#1{\def\sfromlogo{#1}}
  132. \def\sfromlogo{}
  133. \def\logo#1{\def\fromlogo{#1}\def\sfromlogo{#1}}
  134. \def\fromlogo{}
  135. \def\logosymbol#1{\def\symlogo{#1} %
  136.     \iftoplogo\else\def\fromlogo{#1}\fi %
  137.     \ifx\@empty\symlogo\symlogofalse\else\symlogotrue\fi}
  138. \def\datum#1{\def\date{#1}}
  139. \def\date{\today}
  140. %    ****************************************
  141. %    *  stbrief environment - definitionen   *
  142. %    ****************************************
  143. \def\opening#1{
  144.  \thispagestyle{firstpage}
  145.  {\hbox{} \par}
  146.  \vspace*{5mm}  % \vfill
  147.  \par #1\par\nobreak
  148. \long\def\closing#1{\par\nobreak\vspace{\parskip}
  149.   \stopbreaks
  150.   \noindent
  151.   \parbox{0.5\textwidth}{\raggedright
  152.        \ignorespaces #1\\[12mm]
  153.        \ifx\@empty\fromsig\else
  154.        \fromsig \fi\strut}\vfill
  155.    \par}
  156. \def\cc#1{\par\noindent
  157. \parbox[t]{\textwidth}{\@hangfrom{\rm  \ccname }\ignorespaces #1\strut}\par}
  158. \def\encl#1{\par\noindent
  159. \parbox[t]{\textwidth}{\@hangfrom{\rm  \enclname }\ignorespaces #1\strut}\par}
  160. \def\stopletter{}
  161. % Labels
  162. \def\returnaddress{}
  163. \newcount\labelcount
  164. % The following \startlabels command sets things up for producing
  165. % labels in two columns of five 2" X 4-1/4" labels each, suitable
  166. % for reproducing onto Avery brand number 5352 address labels.
  167. \def\startlabels{\labelcount=0 \baselineskip=0pt \lineskip=0pt
  168. \pagestyle{empty}
  169. \let\@texttop=\relax
  170. \topmargin -50pt
  171. \headsep 0pt
  172. \oddsidemargin -35pt
  173. \evensidemargin -35pt
  174. \textheight 10in
  175. \@colht\textheight  \@colroom\textheight \vsize\textheight
  176. \textwidth 550pt
  177. \columnsep 25pt
  178. \baselineskip=0pt
  179. \lineskip=0pt
  180. \boxmaxdepth=0pt
  181. \twocolumn\relax}
  182. \def\mlabel#1#2{\setbox0\vbox{\parbox[b]{3.6in}{\strut\ignorespaces #2}}
  183.          \vbox to 2in{\vss \box0 \vss}}
  184. %    ****************************************
  185. %    *     THE GENERIC STBRIEF COMMANDS     *
  186. %    ****************************************
  187. \long\def\letter#1{\newpage
  188.   \c@page\@ne
  189.   \interlinepenalty=200 % smaller than the TeXbook value
  190.   \@processto{#1}}
  191. \def\endletter{\stopletter\@@par\pagebreak \@@par
  192.   \if@filesw
  193.     \begingroup
  194.       \def\protect{\string}
  195.       \let\\=\relax
  196.       \def\protect##1{\string##1\space}
  197.       \immediate\write\@auxout{\string\mlabel{\returnaddress}{\toname
  198.            \\\toaddress}}
  199.     \endgroup
  200.   \fi}
  201. \long\def\@processto#1{\@xproc #1\\@@@\ifx\toaddress\@empty
  202.     \else \@yproc #1@@@\fi}
  203. \long\def\@xproc #1\\#2@@@{\def\toname{#1}\def\toaddress{#2}}
  204. \long\def\@yproc #1\\#2@@@{\def\toaddress{#2}}
  205. \def\stopbreaks{\interlinepenalty \@M
  206.    \def\par{\@@par\nobreak}\let\\=\@nobreakcr
  207.    \let\vspace\@nobreakvspace}
  208. \def\@nobreakvspace{\@ifstar{\@nobreakvspacex}{\@nobreakvspacex}}
  209. \def\@nobreakvspacex#1{\ifvmode\nobreak\vskip #1\relax\else
  210.                \@bsphack\vadjust{\nobreak\vskip #1}\@esphack\fi}
  211. \def\@nobreakcr{\vadjust{\penalty\@M}\@ifstar{\@xnewline}{\@xnewline}}
  212. \def\startbreaks{\let\\=\@normalcr
  213.    \interlinepenalty 200\def\par{\@@par\penalty 200}}
  214. \def\document{\endgroup
  215.   \@colht\textheight  \@colroom\textheight \vsize\textheight
  216.    \columnwidth\textwidth \@clubpenalty\clubpenalty
  217.    \if@twocolumn \advance\columnwidth -\columnsep
  218.       \divide\columnwidth\tw@ \hsize\columnwidth \@firstcolumntrue
  219.    \fi
  220.   \hsize\columnwidth \linewidth\hsize
  221.   \begingroup\@floatplacement\@dblfloatplacement\endgroup
  222.   \if@filesw \immediate\openout\@mainaux=\jobname.aux
  223.    \immediate\write\@mainaux{\string\startlabels\string\@startlabels}\fi
  224.   \def\do##1{\let ##1\@notprerr}
  225.   \@preamblecmds
  226.   \let\do\noexpand
  227.   \@normalsize\everypar{}
  228. % Sollten noch keine benutzerspezifischen Daten definiert sein,
  229. % gibt es jetzt die Moegloichkeit dazu
  230. \ifdefuser\else\defuser\fi
  231. \def\enddocument{\@checkend{document}\newpage\begingroup
  232. \if@filesw \immediate\closeout\@mainaux
  233. \makeatletter\input \jobname.aux\clearpage
  234. \fi\endgroup\deadcycles\z@\@@end}
  235. \def\makelabels{\@fileswtrue}
  236. \def\@startlabels{}
  237. %    ****************************************
  238. %    *            PAGE STYLES               *
  239. %    ****************************************
  240. \gdef\@knickpoint{%
  241. \vbox to0pt{%
  242.  \vskip1.8cm%
  243.  \noindent\hbox to0pt{\hskip-1.8cm \null\vrule height.3pt width.5cm \hss}%
  244. \vss}%
  245. \def\ps@firstpage{ %
  246. \headheight 7.5cm
  247. \def\@smallfrom{%
  248.       \hbox{%
  249.         \ifx\@empty\sfromlogo %
  250.          \tiny \fromname\  $\cdot$ \fromstreet\ $\cdot$ \fromcity %
  251.         \else %
  252.          \tiny \sfromlogo\ $\cdot$ \fromstreet\ $\cdot$ \fromcity %
  253.         \fi
  254.       }
  255. \def\@from{%
  256.     \parbox[t]{0.33\textwidth}{\raggedright
  257.                                         \vspace{8mm} %
  258.                                         \iffrom %
  259.                                           \scriptsize     %
  260.                                           \fromname \\    %
  261.                                           \fromstreet \\  %
  262.                       \fromcity \\    %
  263.                               \parbox[t]{\telewidth}{Telefon} %
  264.                                           \parbox[t]{\telenumwidth}{\telephonenum} \\
  265.                                           \ifx\@empty\faxnum \else%
  266.                                           \parbox[t]{\telewidth}{Telefax} %
  267.                                           \parbox[t]{\telenumwidth}{\faxnum} \\ \fi%
  268.                                           \normalsize    %
  269.                     \else             %
  270.                                           \par \vspace{5mm} \par %
  271.                                         \fi
  272.                                         \vspace{12mm}
  273.                                         \date}}
  274. \gdef\@firsthed{
  275.         \vbox {
  276.       \iftoplogo%
  277.           \ifx\@empty\fromlogo%
  278.         \parbox{\textwidth}{\Huge \fromname}%
  279.           \else %
  280.             \ifsymlogo%
  281.           \parbox{\textwidth}{\symlogo}%
  282.             \else %
  283.           {\toplogofnt \fromlogo}%
  284.             \fi%
  285.           \fi%
  286.       \fi%
  287.           \vskip 3mm
  288.           \iftoprule %
  289.            \rule[0pt]{\textwidth}{1pt} %
  290.       \fi%
  291.         }
  292. \def\@firsthef{ %
  293.    \hbox to0pt{\@knickpoint\hss}%
  294.    \vbox to \headheight{ %
  295.       \@firsthed
  296.       \vspace*{21mm}\par
  297.       \vbox{
  298.       \parbox[t]{.6\textwidth}{
  299.             \vspace{8mm}
  300.         \ifsmallfrom %
  301.               \raggedright \@smallfrom %
  302.               \vskip 1mm      %
  303.               \hrule          %
  304.         \fi
  305.             \vskip 5mm
  306.             \hspace*{.05\textwidth}
  307.             \parbox[t]{.5\textwidth}{
  308.         \ifx\toname\@empty
  309.         \ifx\toaddress\@empty
  310.             \vbox{.} \vspace{3cm} \vbox{.}
  311.         \fi
  312.         \else
  313.         \toname \\ \toaddress
  314.         \fi
  315.         }
  316.       }
  317.       \hfil
  318.       \@from
  319.     }
  320.     \vspace*{10mm}  % \vfill
  321.     }
  322. \def\@oddhead{%
  323.         \kern-9pt %
  324.         \@firsthef
  325. \def\@oddfoot{%
  326.     \kern-3pt \vbox{
  327.        \ifbottomrule %
  328.          \rule[0pt]{\textwidth}{1pt} %
  329.          \ifbankv %
  330.           \scriptsize Bankverbindung:
  331.           \bankname\ $\cdot$ BLZ.\bankzahl\ $\cdot$ Kto.\kontono %
  332.               \hfill %
  333.          \fi %
  334.         \fi
  335.     }
  336. \def\@evenfoot{
  337.      \iftoprule %
  338.         \vbox{\rule[0pt]{\textwidth}{1pt} } %
  339.      \fi
  340. \global\textheight 21.7cm
  341. \global\@colht\textheight
  342. \global\@colroom\textheight
  343. \global\vsize\textheight
  344. \def\ps@plain{ %
  345. \def\@plainhef{ %
  346.    \vbox to \headheight {
  347.      \@firsthed \vskip 10mm
  348.      \vbox{\rm \hfil Seite \thepage }
  349.    \vfill}
  350. \def\@oddhead{
  351.  \kern-9pt %
  352.  \@plainhef
  353. \def\@oddfoot{
  354.    \vbox{
  355.          \ifbottomrule\rule[0pt]{\textwidth}{1pt}\fi}
  356. \let\@evenhead\@oddhead
  357. \def\@evenfoot{
  358.    \vbox{
  359.         \iftoprule\rule[0pt]{\textwidth}{1pt}\fi
  360. \let\anlage\encl
  361. \let\kopie\cc
  362. % stbrief default preparation
  363. \ps@plain                    % 'plain' page style
  364. \pagenumbering{arabic}       % Arabic page numbers
  365. \onecolumn                   % Single-column
  366. \@fileswfalse                % Inhibits writing of .AUX file.
  367. %    ****************************************
  368. %    *           DEFINE USER                *
  369. %    ****************************************
  370. \gdef\defuser{ %
  371. \openin1 defuser.sty
  372. \ifeof1
  373.   \closein1\relax
  374.   \typeout{}
  375.   \typeout{TeX kann den DefUser.Sty nicht finden. Sie muessen die von Hand}
  376.   \typeout{erstellte Datei mit den benutzerspezifischen Daten in die Liste}
  377.   \typeout{der Optionen im \string\documentstyle~ eintragen. Sie sollten versuchen}
  378.   \typeout{sich den DefUser.Sty zu besorgen, da er ihnen viel Arbeit erspart}
  379.   \typeout{und immer ueber den neusten Stand des STBrief.Sty informiert ist.}
  380.   \typeout{}
  381.   \typeout{Da Ihr Brief ohne die benutzerspezifischen Daten nicht auskommt,}
  382.   \typeout{wird an dieser Stelle der TeXlauf abgebrochen.}
  383.   \typeout{}
  384.   \typein[\return]{Druecken Sie <RETURN> !}
  385.   \end{document}
  386. \else
  387. \closein1\relax
  388. \def\ja{j}
  389. \def\Ja{J}
  390. \typeout{}
  391. \typeout{Achtung:}
  392. \typeout{}
  393. \typeout{Wie sie wissen, benoetigt man fuer den STBrief.Sty eine Datei mit}
  394. \typeout{benutzerspezifischen Daten. Hier gibt es nun die Moeglichkeit}
  395. \typeout{diese Datei interaktiv anzulegen und gleich zu verwenden. Sollten}
  396. \typeout{jedoch eine solche Datei schon existieren, so geben sie einfach}
  397. \typeout{deren Namen ein.}
  398. \typeout{}
  399. \typein[\filename]{Bitte den Namen des DefUser-Files eingeben (ohne Extension):}
  400. \typeout{}
  401. \typeout{Merken Sie sich den Dateinamen \filename[.sty], damit Sie ihn}
  402. \typeout{demnaechst im \string\documentstyle~ als Option angeben koennen.}
  403. \openin2\filename.sty
  404. \ifeof2
  405.     \closein2\relax
  406.     \typeout{}
  407.     \typeout{Keine Datei namens \filename.sty~ gefunden.}
  408.     \typeout{Der DefUser.Sty wird Ihnen helfen eine zu erstellen.}
  409.     \input{defuser.sty}
  410. \else
  411.     \closein2\relax
  412.     \typeout{}
  413.     \typein[\antwort]{Soll die Datei \filename.sty~ geaendert werden (J/N)? [N]}
  414.     \if\antwort\ja\let\antwort\Ja\fi
  415.     \if\antwort\Ja
  416.       \input{defuser.sty}
  417.     \else
  418.       \input{\filename.sty}
  419.     \fi
  420.